<?php
/**
 * quick_curd
 * ============================================================================
 * 版权所有 2024-2099 www.wltx666.com，并保留所有权利。
 * 网站地址: https://www.wltx666.com
 * ============================================================================
 * Author: 草上飞
 * Email: wei@alipay16.cn
 * QQ: 2719875001
 * Date: 2025/5/18
 * 描述:
 */

namespace app\result;

class LocalFileManagerResult extends BaseResult
{
    // 检查文件大小
    public function check_size($args = []): array
    {
        return self::success_return('success', [
            'list' => [
                [
                    'name' => '根目录',
                    'desc' => '删除=找屎！！！',
                    'path' => '/',
                    'size' => ToolsResult::format_bytes(ToolsResult::get_dir_size(app()->getRootPath())),
                    'clear' => false
                ],
                [
                    'name' => '缓存文件',
                    'desc' => '用于缓存登录信息（如果非用redis）、请求文件，非必要请勿删除！会影响用户登录！',
                    'path' => 'runtime/cache',
                    'size' => ToolsResult::format_bytes(ToolsResult::get_dir_size(app()->getRuntimePath() . '/cache')),
                    'clear' => true
                ],
                [
                    'name' => '日志文件',
                    'desc' => '用于记录系统运行日志，可以合理删除！',
                    'path' => 'runtime/log',
                    'size' => ToolsResult::format_bytes(ToolsResult::get_dir_size(app()->getRuntimePath() . '/log')),
                    'clear' => true
                ],
                [
                    'name' => '临时文件',
                    'desc' => '用于缓存页面，可以合理删除，会影响页面速度！',
                    'path' => 'runtime/temp',
                    'size' => ToolsResult::format_bytes(ToolsResult::get_dir_size(app()->getRuntimePath() . '/temp')),
                    'clear' => true
                ],
                [
                    'name' => 'Session文件',
                    'desc' => '用于缓存用户登录信息，可以合理删除，会影响用户登录！',
                    'path' => 'runtime/session',
                    'size' => ToolsResult::format_bytes(ToolsResult::get_dir_size(app()->getRuntimePath() . '/session')),
                    'clear' => true
                ],
                [
                    'name' => '上传文件目录',
                    'desc' => '后台、用户上传的文件（账单附件、图片、头像等），请勿删除！如果你想删除，请从上传记录删除！！！',
                    'path' => 'public/storage',
                    'size' => ToolsResult::format_bytes(ToolsResult::get_dir_size(app()->getRootPath() . '/public/storage')),
                    'clear' => false
                ],

            ]
        ]);
    }

    //清空文件
    public function clear($args = []): array
    {
        $path = $args['path'] ?? '';
        if (!$path) {
            return self::error_return('请选择要删除的目录！');
        }
        if (!in_array($path, ['runtime/cache', 'runtime/log', 'runtime/temp', 'runtime/session'])) {
            return self::error_return('请选择可以清空的目录！');
        }
        switch ($path) {
            case 'runtime/cache':
                $path = app()->getRuntimePath() . '/cache';
                $res = ToolsResult::del_dir($path);
                break;
            case 'runtime/log':
                $path = app()->getRuntimePath() . '/log';
                $res = ToolsResult::del_dir($path);
                break;
            case 'runtime/temp':
                $path = app()->getRuntimePath() . '/temp';
                $res = ToolsResult::del_dir($path);
                break;
            case 'runtime/session':
                $path = app()->getRuntimePath() . '/session';
                $res = ToolsResult::del_dir($path);
                break;
            default:
                $res = false;
                break;
        }
        if (!$res) {
            return self::error_return('清空失败');
        }
        //要重新生成一个目录
        if (!is_dir($path)) {
            @mkdir($path, 0777, true);
        }

        return self::success_return('清空成功');
    }


}
